package com.ruoyi.drawing.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.drawing.domain.DtsDrawingModelDocument;
import com.ruoyi.drawing.api.params.DrawingModelDocumentParams;
import com.ruoyi.drawing.api.query.DrawingModelDocumentQuery;
import com.ruoyi.drawing.api.vo.DrawingModelDocumentVO;
import com.ruoyi.drawing.api.vo.FileVO;
import com.ruoyi.drawing.api.vo.RegionDownloadsUploadsVO;
import com.ruoyi.drawing.api.vo.StorageModelQuantityVO;

import java.util.List;

/**
 * 图档中心模型文档Service接口
 *
 * @author ZhangYu
 * @date 2024-04-30
 */
public interface IDtsDrawingModelDocumentService extends IService<DtsDrawingModelDocument> {

    /**
     * 查询图档中心模型文档分页
     *
     * @param drawingModelDocumentQuery 图档中心模型文档查询参数
     * @return 图档中心模型文档分页
     */
    Page<DrawingModelDocumentVO> drawingModelDocumentPage(DrawingModelDocumentQuery drawingModelDocumentQuery);

    /**
     * 通过图档编码查询文件分页信息
     *
     * @param pageNum      当前页码
     * @param pageSize     每页数量
     * @param documentCode 图档编码
     * @return 图档编码查询文件分页信息
     */
    Page<FileVO> filePageByCode(Integer pageNum, Integer pageSize, String documentCode);

    /**
     * 新增图档中心模型文档
     *
     * @param drawingModelDocumentParams 图档中心模型文档添加or修改参数
     */
    void addDrawingModelDocument(DrawingModelDocumentParams drawingModelDocumentParams);

    /**
     * 修改图档中心模型文档
     *
     * @param drawingModelDocumentParams 图档中心模型文档添加or修改参数
     */
    void updateDrawingModelDocument(DrawingModelDocumentParams drawingModelDocumentParams);

    /**
     * 删除图档中心模型文档
     *
     * @param id 唯一主键
     */
    void removeDrawingModelDocument(Long id);

    /**
     * 获取图档中心模型文档详细信息
     *
     * @param id 唯一主键
     * @return 图档中心模型文档返回参数
     */
    DrawingModelDocumentVO getDrawingModelDocumentInfo(Long id);

    /**
     * 存储模型数量
     *
     * @return 存储模型数量
     */
    StorageModelQuantityVO storageModelQuantity();

    /**
     * 下载量排行
     *
     * @param rowsNumber 查询条数
     * @return 下载量排行
     */
    List<DrawingModelDocumentVO> downloadRankings(Integer rowsNumber);

    /**
     * 添加下载量
     *
     * @param id 图档中心模型文档id
     */
    void addDownloadsNumber(Long id);

    /**
     * 区域下载与上传量
     *
     * @param regionName 图档中心模型文档添加or修改参数
     * @return 区域下载与上传量
     */
    RegionDownloadsUploadsVO regionDownloadsUploads(String regionName);

}
